// 实例和组件都需要

import { compileToFunction } from "./compile/index.js"
import { initState } from "./state"


export function initMixin (Vue) {//初始化混合，表示在vue基础上做一次混合操作
  Vue.prototype._init = function (options) {
    // el data
    const vm = this
    vm.$options = options//后续对options做拓展
    // 数据变视图变化  响应式
    // 对数据进行初始化  watch computed props data
    initState(vm)//vm.$options 
    if (options.el) {
      this.$mount(options.el)
    }

  }
  Vue.prototype.$mount = function (el) {
    const vm = this
    const options = vm.$options
    el = document.querySelector(el)
    if (!options.render) {
      let template = options.template
      if (!template && el) {
        template = el.outerHTML
        let render = compileToFunction(template)
        options.render = render
      }
    }
  }
}